package com.tlb.springboot.starter.rocketmq.annotation;

import com.tlb.springboot.starter.rocketmq.enums.ConsumeMode;
import com.tlb.springboot.starter.rocketmq.enums.SelectorType;

import java.lang.annotation.*;

/**
 * @author yuaneg 2018/8/30
 */
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RocketMQListen {

    String consumerGroup();

    String topic();

    String tags() default "*";

    /**
     * 消费超时 时间(分钟)
     */
    int consumeTimeout() default 15;

    /**
     * 最大消费次数 -1 代表默认16 次
     */
    int maxReconsumeTimes() default -1;

    /**
     * 消费重试默认级别
     * -1 不进行重试直接放入死信队列
     * 0 默认重试 default 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
     * >0  自定义重试级别
     */
    int delayLevel() default 0;

    SelectorType selectorType() default SelectorType.TAG;

    /**
     * 消息监听模式
     */
    ConsumeMode consumeMode() default ConsumeMode.CONCURRENTLY;

    /**
     * Max consumer thread number
     */
    int consumeThreadMax() default 64;

    /**
     * 仅当consumer model 为ORDERLY 有效
     */
    int suspendCurrentQueueTimeMillis() default -1;

}
